/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Assigment.AlmacenamientoPaginas;

import Miscelanea.Almacenamiento.*;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;


/**
 *
 * @author Gunner
 */
public class Problema1 {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        //Para cuestiones de prueba, nos crearemos una serie de tuplas para
        //sustituir el ingreso de tuplas que  implentamos en la tarea anterior
        //que es un poco largo para ingresar datos.
        
        
        
        //Asignamos el nombre del archivo
            String nombreArchivo = "D:/prueba/relacion2.dat";
        
        // Esquema de relación
            List<Atributo> attrs = new ArrayList<>();
            attrs.add(new Atributo("character", Character.class));
            attrs.add(new Atributo("byte", Byte.class));
            attrs.add(new Atributo("short", Short.class));
            attrs.add(new Atributo("integer", Integer.class));
            attrs.add(new Atributo("long", Long.class));
            attrs.add(new Atributo("float", Float.class));
            attrs.add(new Atributo("double", Double.class));
            attrs.add(new Atributo("string", String.class));
            
            Relacion rel = new Relacion(attrs);
            List<Comparable> v = new ArrayList<Comparable>();
       //Tuplas de la relacion(Agregamos a un arreglo de tuplas)
            v.add(new Character('a'));          //2 Bytes
            v.add(new Byte((byte) 26));         // 1 Byte
            v.add(new Short((short) 312));      //2 Bytes
            v.add(new Integer(2048));           //4 Bytes
            v.add(new Long(34567));             //8 bytes
            v.add(new Float(12.3));             //4 Bytes
            v.add(new Double(25.6));            //8 Bytes    
            v.add(new String("blabla"));        //6 Bytes    
            
       
            
   IdentificadorPagina pid1 = new IdentificadorPagina(nombreArchivo, 0);
   IdentificadorPagina pid2 = new IdentificadorPagina(nombreArchivo, 1);
   Pagina p1 = new Pagina(rel, pid1);
   Pagina p2= new Pagina(rel,pid2);  
   
              int NP=0;
        
        for (int i = 0; i < 160; i++) {
             if(p1.hayEspacio(new Tupla(new IdentificadorTupla(nombreArchivo, i), v))){
                 //Auxiliar.add(new Tupla(new IdentificadorTupla(nombreArchivo, i), v));
                 p1.adicionarTupla(new Tupla(new IdentificadorTupla(nombreArchivo, i), v));
                 
                 java.io.RandomAccessFile raf = new java.io.RandomAccessFile(nombreArchivo, "rw");

                 GestorIOPagina.escribirPagina(raf, p1);
            
                raf.close();
                
                
             }
             
             else
             {
                 
                 p2.adicionarTupla(new Tupla(new IdentificadorTupla(nombreArchivo, NP), v));
                 java.io.RandomAccessFile raf = new java.io.RandomAccessFile(nombreArchivo, "rw");

                GestorIOPagina.escribirPagina(raf, p2);
            
                raf.close();
                NP++;
             }
             
        }
       System.out.println(p1);
       System.out.println(p2);
    
 // Crear una página
 // Crear un id de página
        
   
   
   
   
        
        
        
        
        
        
    }
    
}
